/*
 * Particle.h
 *
 *  Created on: 19/05/2010
 *      Author: jorge
 */

#ifndef PARTICLE_H_
#define PARTICLE_H_
#include "../geometry/Vector3D.h"
using namespace geometry;

namespace physics {

class Particle {

private:
	Vector3D p, v, f;
	float m;

public:
	//Constructores y destructor
	Particle();
	Particle(Vector3D, float);
	Particle(Vector3D, Vector3D, float);
	Particle(Vector3D, Vector3D, Vector3D, float);
	Particle(Vector3D);
	Particle(Vector3D, Vector3D);
	Particle(Vector3D, Vector3D, Vector3D);
	virtual ~Particle();
	//Seters
	void setPosition(const Vector3D& p);
	void setVelocity(const Vector3D& v);
	void setForce(const Vector3D& f);
	void setMass(float m);
	//Gueters
	const Vector3D getPosition() const;
	const Vector3D getVelocity() const;
	const Vector3D getForce() const;
	float getMass() const;
	//Interfaz extra
	void addPosition(const Vector3D& p);
	void addVelocity(const Vector3D& v);
	void addForce(const Vector3D& f);
	void emptyForce();
	void emptyVelocity();
};

}

#endif /* PARTICLE_H_ */
